package dao;

import java.util.ArrayList;
import java.util.List;

import modele.Annee;
import modele.Emplacement;
import modele.Indicateur;
import modele.Indicateur_calcule;
//import modele.Theme;

import modele.Indicateur_qualitatif;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;

import services.persistance.BaseDAO;

public class IndicateurDao {
	
	public static void ajouterIndicateur(Indicateur indicateur) {
		BaseDAO.getInstance().ajouter(indicateur);
	}

	public static void modifierIndicateur(Indicateur indicateur) {
		BaseDAO.getInstance().modifier(indicateur);
	}
	public static void modifierIndicateurQualitatif(Indicateur_qualitatif indicateur) {
		BaseDAO.getInstance().modifier(indicateur);
	}

	public static void supprimerIndicateur(Indicateur indicateur) {
		BaseDAO.getInstance().supprimer(indicateur);
	}
	
	public static void supprimerIndicateurTheme(Indicateur indicateur) {
		BaseDAO.getInstance().supprimer(indicateur);
	}

	public static Indicateur_qualitatif getIndicateurQualitatif(long idIndicateur) {
		return (Indicateur_qualitatif) BaseDAO.getInstance().getObject(Indicateur_qualitatif.class, idIndicateur);
	}
	
	public static Indicateur getIndicateur(long idIndicateur) {
		return (Indicateur) BaseDAO.getInstance().getObject(Indicateur.class, idIndicateur);
	}
	
	public static Indicateur_calcule getIndicateurCalcule(long idIndicateur) {
		return (Indicateur_calcule) BaseDAO.getInstance().getObject(Indicateur_calcule.class, idIndicateur);
	}
	
	public static Indicateur_calcule getIndicateurCalcule(String nom) {
		
		ArrayList<Indicateur_calcule> listeIndicateur;
		

		listeIndicateur = (ArrayList<Indicateur_calcule>) BaseDAO.getInstance()
				.getIdEmplacementString("queryIdIndicateurString", nom);
		long id = (long )listeIndicateur.get(0).getIdentifiant();

		return (Indicateur_calcule) BaseDAO.getInstance().getObject(Indicateur_calcule.class, id);
		
			}
	public static List getListeIndicateurs(long idAdmin)
	{
		List liste = new ArrayList<>();
//		liste.add(idAdmin);
		return BaseDAO.getInstance().getListObject("queryListeIndicateurs",liste);
	}
	
	public static List getListeIndicateursTheme(long idTheme)
	{
		List liste = new ArrayList<>();
		liste.add(idTheme);
		return BaseDAO.getInstance().getListObject("queryListeIndicateursCalculeTheme",liste);
	}
	
	public static List getIndicateursTheme(long idTheme)
	{
		List liste = new ArrayList<>();
		liste.add(idTheme);
		return BaseDAO.getInstance().getListObject("queryIndicateursTheme",liste);
	}
	
	public static ArrayList<Indicateur> rechercherIndicateursParCriteresParAdmin(Indicateur indicateur)
	{
		Criteria criteria = BaseDAO.getInstance().getSession().createCriteria(Indicateur.class);
		criteria.add(Restrictions.like("libelle", "%"+ indicateur.getLibelle() +"%"));
		
		criteria.createCriteria("administrateur").add(Restrictions.eq("identifiant", indicateur.getAdministrateur().getIdentifiant()));
		
		return (ArrayList<Indicateur>) BaseDAO.getInstance().getListObjectByCriteria(criteria);
	}

	
	

}
